% escrever aqui as considerações finais do projeto
O trabalho apresentou a extração e busca de informações de textos
jornalísticos sobre futebol usando técnicas de processamento de linguagem
natural. O objetivo foi a criação de agentes que possam extrair
informações de textos e fazer buscas com eficiência e precisão de informações.

Ao observar a quantidade de informação que um texto informativo carrega,
a importância desse tipo de processamento é mostrada, pois os seres humanos
usam a linguagem natural para comunicação e um dos principais meios é o texto.
Por esse meio, pode-se retirar informações que são objetivos do agente
desse projeto. 

Na parte de implementação foi exposta a forma de construção dos agentes. No
Extrator foi exposta todas as etapas do processamento de linguagem natural,
mostrando como foi feito o analisador léxico, sintático e semântico, saindo no
final uma estrutura de dados com os resultados das partidas de futebol.

Como apresentado na seção Resultados e Testes, foi possível verificar que o
Extrator teve resultados satisfatórios, pois em boa parte dos textos foi
possível retirar o mínimo de informações para saber o que aconteceu na partida
de futebol. O mais importante foi que a taxa de acertos
foi alta, mostrando que o Extrator de dados é confiável.


% André, escreva o resultado do buscador
Quanto à busca de informações, esse projeto apresentou uma
implementação de busca de informações. Foi aproveitado o agente
reativo, uma técnica simples, que se aproveita de uma abstraćão dos casos
possíveis, mostrando-se eficiente para este uso.

A arquitetura utilizada pode ser facilmente modificada para outros domínios de
textos por um conjunto limitado de termos de interesse. Para um conjunto
maior, a mesma abordagem pode ser utilizada, mas a complexidade envolvida é
sensivelmente maior.

Para a melhoria do projeto, podem ser utilizadas técnicas mais avançadas de
processamento de linguagem natural para obter mais informações e informações mais precisas.

A grande vantagem mostrada nesse projeto foi a sua divisão em módulos que torna
possível mudanças pontuais e expansões do projeto. Apesar do foco ser em
partidas de futebol, o projeto pode ser modificado facilmente para tratar
outros temas como voleibol ou retirar informações sobre o mercado financeiro.

Apesar dos problemas do projeto e de acurácia dos agentes, eles se mostraram
grandes utilitários para extração de informação não-estruturada, que é muito
comum em documentos ou em páginas da Internet.

\newpage
\section{Contribuições}
Nesse projeto foram desenvolvidas técnicas de processamento de linguagem natural
e retirada de informações de textos.

As principais contribuições desse trabalho foram na criação de agentes que
trabalham com processamento de linguagem natural, tanto para a busca quanto para 
a extração de dados.

A especificação e projeto do Extrator e de todas as fases do processamento de
linguagem natural mostram a importância do contexto nessa extração.

Por fim, o uso de ferramentas de código livre e amplamente conhecidas pela
comunidade como Python, NLTK, PostgreSQL e Django possibilita a
continuação do projeto e as sua expansão.

\section{Dificuldades no projeto}
No projeto ouve muita dificuldade de definir o escopo. Incialmente foi pensada
a idéia de serem retiradas muitas informações sobre os jogos como jogadores,
jogadas da partida, renda, entre outros. Mas, devido à complexidade do trabalho
e a falta de conhecimento sobre o projeto, decidiu-se reduzir o escopo apenas às
informações básicas da partida.

%Escrevendo sobre a retirada de adapatividade. Coloquei aqui pois achei que era
% um problema de escopo, também.
Outro problema de escopo foi o interesse da busca em apresentar
adaptavidade, principalmente para aprender apelidos de equipes e jogadores.
Infelizmente, a complexidade envolvida para isso tornou esse desejo inviável
para a implementação do projeto.

Também não foi tratado no projeto a questão do tratamento de cidades onde
ocorreram as partidas. A complexidade desse tratamento se mostrou grande, pois
gerava muita confusão entre as cidades e as equipes que tinham o mesmo nome da
cidade. Por isso, foi decidido remover esse tratamento do projeto.

Durante a análise, outro problema encontrado foi o aprendizado teórico sobre o
assunto de processamento de linguagem natural, pois muito do material
encontrado era assunto avançado ou pouco relavante ao projeto. Era necessário
solidificar os conceitos e isso foi conseguido com o livro do NLTK.

O \emph{framework} também foi outro grande empecilho ao projeto. Inicialmente
foi proposto o uso do \emph{framework} GATE (General Architecture for Text
Engineering) feito em Java. Mas tal \emph{framework} se mostrou muito complexo
ao projeto por tratar várias etapas do processamento de linguagem natural e ter
pouco suporte à língua portuguesa; logo, a linguagem de programação Java se
mostrou pouco atrativa. Assim, decidiu-se usar o NLTK e Python, que agilizaram
muito o processo. O etiquetador morfológico também foi uma dificuldade grande no
projeto, pois é muito raro encontrar tal material pronto sobre o assunto em
língua portuguesa.

Durante a implementação foram necessários vários refinamentos ao analisadores
das ferramentas, pois eles tinham o resultado muito abaixo do esperado. O
analisador que precisou maior tratamento foi o léxico devido às limitações do
etiquetador.

Quanto ao mecanismo de busca, houve uma dificuldade por decidir qual modelo
utilizar. Na referência usada há um grande número de técnicas. O modelo
escolhido (agente reativo) apresentou a adequação necessária e complexidade
aceitável à implementação. A dificuldade nesta etapa foi o levantamento de
técnicas por sua extensão.

O \emph{framework} Django, mesmo sendo bem documentado e de código aberto,
apresentou alguma dificuldade para o uso de sua API de persistência para
módulos que não estejam diretamente envolvidos com páginas web.

\section{Trabalhos Futuros}

%Para dar continuidade ao trabalho de extração e Busca de Informações,
%vários trabalhos são propostos:
%\begin{itemize}
%\item Maior abrangência na ontologia, adicionando jogadores e jogadas na
%partida. Com isso o Extrator pode extrair além de informações básicas da
%partida como jogadas, interações entre jogador-jogador, cartões dados pelo
%árbitro, impedimentos, entre outros.
%\item Inserção de técnicas de adaptatividade para aprendizado de apelidos de
%time de futebol. Com isso uma referência a 'Alvi-verde' seria
%igual a 'Palmeiras', que já está na lista de equipes. Assim, o refinamento
%léxico será mais poderoso e poderá abranger mais sentenças.
%\item Introdução de técnicas mais refinadas de inteligência artificial: com o
%aumento de termos de interesse sendo buscado, o agente reativo pode tornar-se
%inviável de se manter, ou mesmo de ser utilizado para se fazer as buscas.
%\item Uso de adaptatividade para as buscas. Em função de entradas do usuário,
%há a complementaćão os resultados da extração de dados.
%\item Modularização das informações a serem extraídas e buscadas. Com a
%separação destas informações do código, isso tornaria o projeto muito mais
%facilmente expansível, facilitando a implementação do processo para qualquer
%domínio de textos.
%\end{itemize}

O trabalho de extração e busca de informações tem muito o que ser extendido e
melhorado, apresentamos nesta seção algumas sugestões de por onde pode-se
prosseguir.


\subsection{Extensão}
Das extensões possíveis ao sistema, podemos começar pelo aumento do domínio das
informações extraídas. No presente momento, obtem-se as equipes que jogaram, o
resultado da partida e estádio onde ela aconteceu. Pode-se acrescentar a
capacidade de identificar jogadores participantes, lances de importânca tais
como faltas, cartões, impedimentos.

Pode-se associar o sistema a um sistema de \emph{web crawling}, para a obtenção
automática de textos, aumentando a gama de dados disponíveis à extração,
podendo não só obter dados sobre campeonatos presentes, como de campeonatos
anteriores, mantendo um banco de dados histórico e crescente sobre partidas de
futebol.

Quanto à extração de textos em outras línguas, como inglês e espanhol, é
necessário refazer a lista de termos relevantes que orientam a extração. É
também necessário refazer a parte de programação orientada à gramática em
função da língua do texto de onde se quer extrair as informações. O mesmo
procedimento pode ser utilizado para se mudar o domínio das informações, como
notícias a respeito de economia, ou saúde pública.

\subsection{Adaptatividade}
Apesar de poder ser considerada uma extensão do trabalho, acreditamos que pelas
possibilidades, vale a pena destacar a importância da adaptatividade. O projeto
permite muitas melhorias com o uso destas técnicas.

Do ponto de vista da extração, podemos aumentar a quantidade de termos que o
sistema considera relevantes para a obtenção de dados da partida, como apelidos
das equipes e estádios, podendo inclusive localizar cada vez mais termos
relevantes às partidas, em função da frequência com que os mesmos aparecem nos
textos.

Quanto à busca, o agente reativo também permite a inclusão de adaptatividade
pela maneira como foi implementado. Através de técnicas de programação
reflexiva, que Python permite, pode-se incluir novos casos de busca em função
de novas entradas que o usuário coloque, como a busca por participações de
jogadores, jogos que tenham tido certo árbritro entre outras possibilidades.


\subsection{Desempenho}
Para tornar o sistema mais viável a ser disponibilizado ao público, é
necessário que haja uma pesquisa maior sobre o etiquetador. O POS Tagger,
apesar dos resultados interessantes, não apresenta um bom desempenho para ser
utilizado em larga escala. Um texto de 6 parágrafos leva em
torno de 5 segundos para ser plenamente etiquetado. Considerando que é
utilizado também no processo de busca, isso torna a solução atual inviável para
o grande público.

O ponto do etiquetador é um dos grandes gargalos do sistema, mas o trabalho
todo foi orientado à obtenção de resultados, nem tanto quanto ao desempenho.
Para melhorá-lo de maneira geral, pode-se pesquisar outras técnicas que
permitam o processamento linguístico mais rapidamente. Do ponto de vista da
implementação como um todo, pode-se considerar a recodificação em Java ou C, ou
mesmo considerar a utilização de compilação JIT do sistema através do Psyco.

É necessário também adaptar o sistema para que seja executado com sucesso por
um servidor voltado a ambientes de produção, como o Apache.
